1. Technical Field
This invention relates generally to computer hardware analysis, and more specifically to determining the state of all flip-flops in an application-specific integrated circuit and displaying an analysis based on the states.
2. Discussion of Background Art
With the advent of the computer age, integrated circuits have spread into a variety of products and applications. Not just computers, but appliances, automobiles, toys, games, and many other products contain integrated circuitry. Further, as society demands ever-more sophisticated products, integrated circuits become increasingly complex. Most integrated circuits consist of multiple logic blocks, each of which performs a logical function. Outputs from one logic block may be used to control another logic block, for example.
As with many systems, increases in the complexity of circuitry lead not only to more demanding designs, smaller form-factors, and increased costs, but also to increased failure rates and likelihood of failure. Modern integrated circuits often suffer unexpected failures due to unforeseen logic issues, parasitic impedances, crosstalk between components, synchronization errors, faulty components, overheating, and so forth. Many times, determining the exact reason for an integrated circuit's failure is extremely difficult, expensive, and time-consuming.
With the increasing miniaturization of integrated circuits, necessary to fit integrated circuits in ever-smaller footprints, larger numbers of logic blocks are fitted in each circuit. This, in turn, limits the ability to view the internal state of complex logic blocks. As the number of gates per pin and integration of high-speed analog interfaces continues to develop and limit the number of pins available to connect a debugging device to the integrated circuit, the ability to view a circuit's internal functions will continue to diminish.
Presently, certain techniques permit one to stop an integrated circuit's internal clocks and scan out the state of all flip-flops in a circuit or component logic block. However, while this may provide the ability to view a single “snapshot” of an integrated circuit's operational state, it provides no information of any time prior to or following the snapshot. Essentially, this operation permits one to determine a current state, but not earlier-occurring causes. As an analogy, present methods are similar to looking at a street sign when lost, but not consulting a map to determine what wrong turns were taken.
Generally, the prior causes of aberrant behavior may be particularly difficult to track down, especially if the exact time of the aberration is unknown. Thus, simply viewing a single snapshot of a circuit's error state may be minimally useful in many situations. It may often be preferable to view a data flow instead of a static image.
Further, it is often advantageous to view flip-flop states during the operation of an integrated circuit. Environmental variables, such as power supply and ambient temperature, may affect the operation of an integrated circuit or component logic block. Thus, errors in operation may be present when the integrated circuit is in an operating environment (such as a computer), but not a testing environment. Many current analysis routines require the integrated circuit to be removed from an operational environment.
Additionally, it is often useful to view the operation of an integrated circuit or component logic block while the integrated circuit operates at speed. The ability to view an accurate waveform during standard operation of the circuit may show, for example, errors resulting from timing or crosstalk, both of which may build over time until a fault state is reached. Presently, certain nodes within a logic block may be made visible by routing the nodes to pins external to the logic block and invoking a test mode. While this may provide good visibility of the selected nodes' operation, the method is inherently limited in the number of nodes that may be viewed. Because each node (or flip-flop) must be hardwired to a pin, the number of viewable nodes is limited by the number of available pins. Further, the decision must be made during design as to which nodes will be connected to pins, and thus viewable. Where few pins are available, the insight into the operation of a complex circuit is relatively negligible. However, if too many pins are provided, the circuit's footprint may become too large.
Thus, there is a need in the art for an improved method and apparatus for analyzing the operation of an integrated circuit.